package com.sprouting.personal.model.common;

/**
 * @author ：LX
 * @ Date 创建时间： 2021/5/18. 9:14
 * 地点：长沙麓谷
 * 目的: 自定义的业务异常 RuntimeException能实现事务回滚。如果不需要熔断，不进入熔断逻辑，可以继承 HystrixBadRequestException
 * 备注说明：
 *      注意，该方法的堆栈信息被重写，请勿将本方法用于系统异常信息的抛出。本类只用于处理业务异常，即可预见的错误信息。
 *      请注意，你能知道的异常都不是异常，请尽量将异常做前置校验处理，而不是通过异常抛出。
 *      应该避免调用本地方法调用堆栈信息来提高性能，否则非常影响性能，差距能达到400倍之多
 */
public class ServiceException extends RuntimeException {

    public ServiceException(String message) {
        super(message);
    }

    /**
     * 获取异常信息
     * @return 异常信息
     */
    public String getMsg(){
        return super.getMessage();
    }

    /**
     * 重写堆栈信息填写，提高性能
     * @return
     */
    @Override
    public synchronized Throwable fillInStackTrace() {
        return this;
    }
}
